package terracraft;

/**
 * Cette classe représente une erreur dans le jeu.
 * 
 * Il faut, si possible, définire la cause et le message.
 * Le constructeur prioritaire est GameError(String message, Throwable cause).
 * 
 * @author linkpy
 */
public class GameError extends RuntimeException {
    /**
     * Constructeur avec juste la cause.
     * 
     * Il est mieux de ne pas l'utilisé.
     * 
     * @param cause La cause.
     */
    public GameError(Throwable cause) {
        super(cause);
    }

    /**
     * Constructeur avec le message d'erreur et la cause.
     * 
     * Il est mieux de l'uilisé.
     * 
     * @param message Le message d'erreur.
     * @param cause La cause.
     */
    public GameError(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * Constructeur avec la classe où il y a eux l'erreur, le message d'erreur
     * et la cause
     * 
     * Correspon à GameError(" ["+classe+"] "+message, cause).
     * 
     * À utilisé plutôt pour le débogage.
     * 
     * @param classe La classe où il y a eux l'erreur
     * @param message Le message d'erreur
     * @param cause La cause
     */
    public GameError(String classe, String message, Throwable cause) {
        this(" ["+classe+"] "+message, cause);
    }
    
    /**
     * Constructeur avec la classe où il y a eux l'erreur et le message 
     * d'erreur.
     * 
     * Correspon à GameError(" ["+classe+"] "+message).
     * 
     * À utilisé plutôt pour de débogage.
     * 
     * @param classe La classe où il y a eux l'erreur
     * @param message Le message d'erreur
     */
    public GameError(String classe, String message) {
        this(" ["+classe+"] "+message);
    }
    
    /**
     * Constructeur avec le message d'erreur.
     * 
     * À utilisé que quand il n'y a pas cause.
     * 
     * @param message 
     */
    public GameError(String message) {
        super(message);
    }
}
